home *** CD-ROM | disk | FTP | other *** search
/ Disc to the Future 2 / Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin / MAC / THINKC / 5 / MACVOGL- / H2V.H < prev    next >
Text File  |  1992-07-19  |  9KB  |  244 lines

  1.  
  2. /*
  3.  *  Some useful stuff....
  4.  */
  5. #define ABS(x)        ((int)(x) < 0 ? (int)(-x) : (int)(x))
  6. #define MAX(x,y)    ((int)(x) < (int)(y) ? (int)(y) : (int)(x))
  7. #define MIN(x,y)    ((int)(x) < (int)(y) ? (int)(x) : (int)(y))
  8.  
  9. /*
  10.  * convert hershey byte to coordinate
  11.  */
  12. #define    COORD(x)    ((int)(x) - (int)'R')
  13.  
  14. /*
  15.  *  Max Number of Hershey characters.
  16.  */
  17. #define    MAX_CHARS    6300
  18.  
  19. #define    MAX_POINTS    500            /* max points in a char */
  20. #define    MAX_BUF        (2 * MAX_POINTS)    /* max buffer size */
  21.  
  22. /*
  23.  * hershey table tape
  24.  */
  25. typedef struct {
  26.     short    len;
  27.     char    *ch;
  28. } HTAB;
  29.  
  30. /*
  31.  *  These next few tables define which of the hershey characters
  32.  *  actually make up the various fonts.
  33.  */  
  34.  
  35. #define    MAX_ENTS    200
  36.  
  37. typedef struct {
  38.         char    *name;
  39.         int     ent[MAX_ENTS];
  40. } FTAB;
  41.  
  42. FTAB    fonts[] = {
  43.     {
  44.         "times.g",
  45.         2199, 0, 2214, 0, 2217, 0, 733, 0, 2274, 0, 2271, 0, 2272, 0,
  46.         2216, 0, 2721, 0, 2722, 0, 728, 0, 725, 0, 1211, 0, 724, 0,
  47.         1210, 0, 720, 0, 2200, 2209, 1212, 1213, 2241, 0, 2238, 0,
  48.         2242, 0, 2215, 0, 2273, 0, 2027, 2028, 2048, 0, 2030, 0,
  49.         2031, 0, 2047, 0, 2029, 0, 2033, 0, 2035, 0, 229, 0, 2036, 2039,
  50.         2041, 2042, 2034, 0, 2043, 2046, 718, 0, 2050, 0, 2040, 0,
  51.         2049, 0, 2032, 0, 1405, 0, 804, 0, 1406, 0, 2247, 0, 3929, 0,
  52.         2249, 0, 2127, 2128, 2148, 0, 2130, 2131, 2147, 0, 2129, 0,
  53.         2133, 0, 2135, 0, 727, 0, 2136, 2139, 2141, 2142, 2134, 0,
  54.         2143, 2146, 2237, 0, 2150, 0, 2140, 0, 2149, 0, 2132, 0,
  55.         1407, 0, 723, 0, 1408, 0, 2246, 0, 3934, 0, 0,0
  56.     },
  57.     {
  58.         "times.i",
  59.         2199,0, 2764,0, 2778,0, 733,0, 2769,0, 2271,0, 2272,0,
  60.         2777,0, 2771,0, 2772,0, 728,0, 725,0, 2761,0, 724,0,
  61.         2760,0, 720,0, 2750,2759, 2762,2763, 2241,0, 2238,0, 2242,0,
  62.         2765,0, 2273,0, 2051,2076, 1405,0, 804,0, 1406,0, 2247,0,
  63.         3929,0, 2249,0, 2151,2176, 1407,0, 723,0, 1408,0, 2246,0,
  64.         3934,0, 0,0,
  65.     },
  66.     {
  67.         "times.r",
  68.         2199,0, 2214,0, 2728,0, 733,0, 2274,0, 2271,0, 2272,0,
  69.         2216,0, 2221,0, 2222,0, 728,0, 725,0, 1211,0, 724,0,
  70.         1210,0, 720,0, 2200,2209, 1212,1213, 2241,0, 2238,0, 2242,0,
  71.         2215,0, 2273,0, 2001,2026, 1405,0, 804,0, 1406,0, 2247,0,
  72.         3929,0, 2249,0, 2101,2126, 1407,0, 723,0, 1408,0, 2246,0,
  73.         3934,0, 0,0,
  74.     },
  75.     {
  76.         "times.ib",
  77.         2199,0 , 3264,0, 2778,0, 733,0, 3269,0, 2271,0, 3268,0,
  78.         2777,0, 3271,3272 , 3273,0, 2725,0, 3261,0, 724,0, 3260,0,
  79.         2720,0, 3250,3259, 3262,3263, 2241,0, 2726,0, 2242,0, 3265,0,
  80.         2273,0, 3051,3076, 1405,0, 804,0, 1406,0, 2247,0, 3929,0,
  81.         2249,0, 3151,3176, 1407,0, 723,0, 1408,0, 2246,0, 3934,0, 0,0,
  82.     },
  83.     {
  84.         "times.rb",
  85.         2199,0 , 3214,0, 3228,0, 733,0, 3219,0, 2271,0, 3218,0,
  86.         3227,0, 3221,0, 3222,0, 2723,0, 2725,0, 3211,0, 724,0,
  87.         3210,0, 2720,0, 3200,3209, 3212,3213, 2241,0, 2726,0, 2242,0,
  88.         3215,0, 2273,0, 3001,3026, 1405,0, 804,0, 1406,0, 2247,0,
  89.         3929,0, 2249,0, 3101,3126, 1407,0, 723,0, 1408,0, 2246,0,
  90.         3934,0, 0,0,
  91.     },
  92.     {
  93.         "futura.l",
  94.         2199,0, 714,0, 717,0, 733,0, 719,0, 2271,0, 734,0,
  95.         2251,0, 721,0, 722,0, 728,0, 725,0, 1211,0, 724,0,
  96.         1210,0, 720,0, 700,709, 1212,1213, 2241,0, 2238,0, 2242,0,
  97.         715,0, 2273,0, 501,526, 1405,0, 804,0, 1406,0, 832,0,
  98.         3927,0, 1252,0, 601,626, 1407,0, 723,0, 1408,0, 2246,0,
  99.         3934,0, 0,0,
  100.     },
  101.     {
  102.         "futura.m",
  103.         2199,0, 2714,0, 2728,0, 733,0, 2719,0, 2271,0, 2272,0,
  104.         2727,0, 2221,2222 , 2723,0, 2725,0, 2711,0, 724,0, 2710,0,
  105.         2720,0, 2700,2709, 2712,2713, 2241,0, 2726,0, 2242,0, 2715,0,
  106.         2273,0, 2501,2526, 1405,0, 804,0, 1406,0, 2247,0, 3929,0,
  107.         2249,0, 2601,2626, 2227,0, 723,0, 2228,0, 2246,0, 3934,0, 0,0,
  108.     },
  109.     {
  110.         "gothic.eng",
  111.         2199,0, 3714,0, 3728,0, 733,0, 3719,0, 2271,0, 3718,0,
  112.         3227,0, 3221,0, 3222,0, 2723,0, 2725,0, 3711,0, 724,0,
  113.         3710,0, 2720,0, 3700,3709, 3712,3713, 2241,0, 2726,0, 2242,0,
  114.         3715,0, 2273,0, 3501,3526, 1405,0, 804,0, 1406,0, 2247,0,
  115.         3931,0, 2249,0, 3601,3626, 1407,0, 723,0, 1408,0, 2246,0,
  116.         3934,0, 0,0,
  117.     },
  118.     {
  119.         "gothic.ger",
  120.         2199,0 , 3714,0, 3728,0, 733,0, 3719,0, 2271,0, 3718,0,
  121.         3227,0, 3221,0, 3222,0, 2723,0, 2725,0, 3711,0, 724,0,
  122.         3710,0, 2720,0, 3700,3709, 3712,3713, 2241,0, 2726,0, 2242,0,
  123.         3715,0, 2273,0, 3301,3326, 1405,0, 804,0, 1406,0, 2247,0,
  124.         3932,0, 2249,0, 3401,3426, 1407,0, 723,0, 1408,0, 2246,0,
  125.         3934,0, 0,0,
  126.     },
  127.     {
  128.         "gothic.ita",
  129.         2199,0, 3714,0, 3728,0, 733,0, 3719,0, 2271,0, 3718,0,
  130.         3227,0, 3221,0, 3222,0, 2723,0, 2725,0, 3711,0, 724,0,
  131.         3710,0, 2720,0, 3700,3709, 3712,3713, 2241,0, 2726,0, 2242,0,
  132.         3715,0, 2273,0, 3801,3826, 1405,0, 804,0, 1406,0, 2247,0,
  133.         3933,0, 2249,0, 3901,3926, 1407,0, 723,0, 1408,0, 2246,0,
  134.         3934,0, 0,0,
  135.     },
  136.     {
  137.         "math.low",
  138.         2199,0, 2233,2235, 229,0, 2271,0, 2243,2244, 2221,2222, 
  139.         728,0, 725,0, 1211,0, 724,0, 1210,0, 720,0, 700,709,
  140.          2401,2402, 2241,0, 2238,0, 2242,0, 2239,0, 2240,0,
  141.          601,626, 1405,0, 804,0, 1406,0, 2245,0, 2270,0, 718,719,
  142.         2255,0, 2267,0, 2256,2266, 2267,0, 2268,0, 2412,0, 2403,2406,
  143.         2279,0, 2077,0, 2237,0, 2230,0, 738,0, 1407,0, 739,0,
  144.         1408,0, 740,0, 2246,0, 0,0,
  145.     },
  146.     {
  147.         "math.upp",
  148.         2199,0, 2233,2235, 229,0, 2271,0, 2243,2244, 2221,2222, 728,0,
  149.         725,0, 711,0, 724,0, 710,0, 720,0, 700,709, 2401,2402,
  150.         2241,0, 2238,0, 2242,0, 2239,0, 2240,0, 501,526, 1405,0,
  151.         804,0, 1406,0, 2245,0, 2270,0, 718,0, 728,0, 2255,0,
  152.         2267,0, 2256,2266, 2267,0, 2268,0, 2412,0, 2403,2406, 2279,0,
  153.         2077,0, 2237,0, 2230,0, 738,0, 1406,0, 739,0, 1407,0,
  154.         740,0, 2246,0, 0,0,
  155.     },
  156.     {
  157.         "cyrillic",
  158.         2199, 0, 2214, 0, 2217, 0, 733, 0, 2828, 0, 2923, 0, 2928, 0,
  159.         2216, 0, 2721, 0, 2722, 0, 728, 0, 725, 0, 1211, 0, 724, 0,
  160.         1210, 0, 720, 0, 2200, 2209, 1212, 1213, 2241, 0, 2238, 0,
  161.         2242, 0, 2215, 0, 2273, 0, 2801, 2802, 2830, 0, 2805, 0,
  162.         2809, 0, 2821, 0, 2804, 0, 2807, 0, 2809, 0, 2824, 0,
  163.         2811, 2816, 2825, 0, 2817, 2819, 2831, 0, 2803, 0, 2826, 0,
  164.         2822, 0, 2820, 0, 2808, 0, 2806, 0, 804, 0, 2827, 0, 2832, 0,
  165.         2829, 0, 2823, 0, 2901, 2902, 2830, 0, 2905, 0, 2910, 0,
  166.         2921, 0, 2904, 0, 2907, 0, 2909, 0, 2924, 0, 2911, 2916,
  167.         2925, 0, 2917, 2919, 2931, 0, 2903, 0, 2926, 0, 2922, 0,
  168.         2920, 0, 2908, 0, 2906, 0, 2927, 0, 2932, 0, 2929, 0, 2246, 0,
  169.         0,0
  170.     },
  171.     {
  172.         "astrology",
  173.         2199,0, 2312,0, 2728,0, 2281,2285, 2221,0, 2222,0, 2286,2287,
  174.         1211,0, 2288,0, 1210,0, 2289,0, 3250,3259, 2290,2295, 2301,0,
  175.         3001,3026, 2302,0, 804,0, 2303,2306, 3151,3176, 2308,2311,
  176.         2246,0, 0,0,
  177.     },
  178.     {
  179.         "meteorology",
  180.         2199,0, 750,753, 2271,0, 754,757, 728,0, 758,0, 1211,0,
  181.         724,0, 1210,0, 720,0, 700,709, 759,763, 2215,0, 2273,0,
  182.         501,526, 1405,0, 804,0, 1406,0, 519,0, 766,0, 765,0,
  183.         601,626, 1407,0, 767,0, 1408,0, 768,0, 2246,0, 0,0,
  184.     },
  185.     {
  186.         "music",
  187.         2199,0, 2214,0, 2318,2329, 2378,0, 2331,0, 2200,2209, 712,0,
  188.         2330,2331, 2381,0, 2332,0, 2382,0, 2377,0, 2051,2076, 1405,0,
  189.         804,0, 1406,0, 2248,0, 724,0, 2249,0, 2151,2176, 1407,0,
  190.         723,0, 1408,0, 2246,0, 3934,0, 0,0,
  191.     },
  192.     {
  193.         "greek",
  194.         2199, 0, 714, 0, 717, 0, 733, 0, 719, 0, 2271, 0, 734, 0,
  195.         2251, 0, 721, 0, 722, 0, 728, 0, 725, 0, 1211, 0, 724, 0,
  196.         1210, 0, 720, 0, 700, 709, 1212, 1213, 2241, 0, 2238, 0,
  197.         2242, 0, 715, 0, 2273, 0, 527, 528, 548, 0, 530, 531, 547, 0,
  198.         529, 0, 533, 0, 535, 0, 229, 0, 536, 539, 541, 542, 534, 0,
  199.         543, 546, 718, 0, 550, 0, 540, 0, 549, 0, 532, 0, 1405, 0,
  200.         804, 0, 1406, 0, 832, 0, 3927, 0, 1252, 0, 627, 628, 648, 0,
  201.         630, 631, 647, 0, 629, 0, 633, 0, 635, 0, 727, 0, 636, 639,
  202.         641, 642, 634, 0, 643, 646, 2237, 0, 650, 0, 640, 0, 649, 0,
  203.         632, 0, 1407, 0, 723, 0, 1408, 0, 2246, 0, 3934, 0, 0,0,
  204.     },
  205.     {
  206.         "cursive", 
  207.         2199,0, 714,0, 717,0, 733,0, 719,0, 2271,0, 734,0,
  208.         216,0, 721,0, 722,0, 728,0, 725,0, 1211,0, 724,0,
  209.         1210,0, 720,0, 700,709, 1212,1213, 2241,0, 2238,0, 2242,0,
  210.         715,0, 2273,0, 551,576, 1405,0, 804,0, 1406,0, 832,0,
  211.         3928,0, 1252,0, 651,676, 1407,0, 723, 0, 1408,0, 2246,0,
  212.         3934,0, 0,0,
  213.     },
  214.     {
  215.         "script",
  216.         2199,0, 2214,0, 2728,0, 733,0, 2274,0, 2271,0, 2272,0,
  217.         2216,0, 2221,0, 2222,0, 728,0, 725,0, 1211,0, 724,0,
  218.         1210,0, 720,0, 2750,2759, 1212,1213, 2241,0, 2238,0, 2242,0,
  219.         2215,0, 2273,0, 2551,2576, 1405,0, 804,0, 1406,0, 2247,0,
  220.         3930,0, 2249,0, 2651,2676, 1407,0, 723,0, 1408,0, 2246,0,
  221.         3934,0, 0,0,
  222.     },
  223.     {
  224.         "markers",
  225.         2199,0, 2199,0, 2199,0, 2199,0, 2199,0, 2199,0, 2199,0, 2199,0,
  226.         2199,0, 2199,0, 2199,0, 2199,0, 2199,0, 2199,0, 2199,0, 2199,0,
  227.         2199,0, 2199,0, 2199,0, 2199,0, 2199,0, 2199,0, 2199,0, 2199,0,
  228.         2199,0, 2199,0, 2199,0, 2199,0, 2199,0, 2199,0, 2199,0, 2199,0,
  229.         2199,0, 840,844, 866,0, 845,847, 850,855, 834,0,
  230.         2199,0, 2199,0, 2199,0, 2199,0, 2199,0, 2199,0, 2199,0, 2199,0,
  231.         2199,0, 2199,0, 2199,0, 2199,0, 2199,0, 2199,0, 2199,0, 2199,0,
  232.         840,844, 866,0, 845,847, 850,855, 834,0,
  233.         2199,0, 2199,0, 2199,0, 2199,0, 2199,0, 2199,0, 2199,0, 2199,0,
  234.         2199,0, 2199,0, 2199,0, 2199,0, 2199,0, 2199,0, 2199,0, 2199,0,
  235.         0,0,
  236.     },
  237.     {
  238.         "symbolic",
  239.         2199,0, 800,0, 797,834, 840,847, 850,855, 857,0, 864,0,
  240.         860,863, 804,0, 865,874, 735,0, 745,0, 2276,0, 2277,2278,
  241.         740,744, 2407,2411, 2187,0, 2190,2196, 856,0, 2246,0, 0,0,
  242.     }
  243. };
  244.